へー、連想配列にこういう使い方があるのかと関心。。。 自分だったらVBA使わずに"仮"シートに "=SUMIF(お店!$B:$B, A店, お店!$C:$C)" とか計算式埋めて済ませちゃうかも VBA使うんだったら自分だったらこう書く Application.ScreenUpdating = False Application.Calculation = xlManual With Worksheets("仮") For i = LBound(keys) To UBound(keys) .Range("A" & i + 2).Value = keys(i) .Range("B" & i + 2).Formula = "=SUMIF(お店!$B:$B," & keys(i) & ",お店!$C:$C)" Next i End With Application.Calculation = xlAutomatic Application.ScreenUpdating = True
一年前にこの動画を見つけて、何言ってるかちんぷんかんぷんだったけど、やっと理解できた!
ありがとうございます!
この動画のマクロを自分のPCで再現してみて、プログラムの良さが実感できました。ありがとうございます。
こいこいさんとRintaVlogさんの動画を何回も見返して勉強しています。お二人共本当に勉強になる動画をあげていただいてありがとうございます。
お疲れ様です!
組み合わせて更に便利に!
ラジオで仰っていたアンパンマン♪お優しいですね◎
知りたい内容でした!
大変ありがとうございます!!!
配列もユーザー定義も連想配列もこいこいさんで学びました。
ユーザー定義型は以前の動画で初めて知りました。
ユーザー定義型の汎用性は凄いですね。
私は今回のような場合は連想配列のアイテムに配列を入れて使っていました。
ユーザー定義型の方が型名を付けられるので可読性は良さそうですね。
汎用性ありますよね!結構便利です(^o^)v
@こいこいの人工知能研究室
これを二次元目配列で実装しようとすると、最初に十分大きな配列を用意しておくか、もしくは一次元目を列・二次元目を行として配列を組んで、最後にTransposeする感じになるんですかね?
二次元配列の利点はシートへの吐き出しが一発で出来る事ですね。
もしかして、ユーザー定義型の配列もTransposeすれば一列ずつなら一気に吐き出し出来るんでしょうか?
@@haru-md9ly 確かに一気にセルに貼り付けられれば便利ですよね。
そういった方法があるかは調べてみないとですね!
勉強になりました。
ありがとうございます。使えました!!!!!!
配列 型が一致しませんで悩むです。解決せんば・・・・・・なぜだ。。。。
なるほどー。連想配列をよく使いますが、このやり方は思いつかなかったですね。
今回のようなパターンだとdic%を複数用意することしかしてなかったです。
私も複数用意してやってましたね!
辞書とユーザー定義型の組み合わせいいですね。こう使うのかと感動しました。
また、ユーザー定義型を使うと可読性と仕様が変わった時の柔軟性が素晴らしい。
それらが犠牲になりますが速度を求める人はユーザー定義型の代わりに普通に2次元配列に格納しちゃうでしょうね。使い分けに悩みます。
仕様が変わったときは簡単に修正できますね(^^)
プログラムの勉強じゃなければ、
ピボットテーブル使えよ!って突っ込みいれてます。
キーを複数にしたい。例えば、月日とお店で集計したい場合、どのようにすれば良いでしょうか?
へー、連想配列にこういう使い方があるのかと関心。。。
自分だったらVBA使わずに"仮"シートに "=SUMIF(お店!$B:$B, A店, お店!$C:$C)" とか計算式埋めて済ませちゃうかも
VBA使うんだったら自分だったらこう書く
Application.ScreenUpdating = False
Application.Calculation = xlManual
With Worksheets("仮")
For i = LBound(keys) To UBound(keys)
.Range("A" & i + 2).Value = keys(i)
.Range("B" & i + 2).Formula = "=SUMIF(お店!$B:$B," & keys(i) & ",お店!$C:$C)"
Next i
End With
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
うーん・・・
ユーザー定義型を使うんですか。
使い所にもよるでしょうが、
自分の場合はクラスモジュールを使いますね。
実際、連想配列を使用するケースはシートにSQL投げて何とか出来ないような複雑な場合が多いですから。
クラスをEntityの型と考えてインスタンスを生成したものを連想配列にストアしていけば複数の変数だろうが連想配列の入れ子だろうがどうにでもなりますからね。
この方法は旧VBやクラシックASP等ではシリアル化出来ないので問題がありますが、
VBAではそもそもシリアル化する必要もないので問題なく使えるでしょう。
アンパンマンのおにぎりは最後どうなったのですか?
弟が食べました(笑)
オートフィルタ条件、
2次元配列出来ないたらこ
アンパンマンの🍙お母様❤素敵ですね❤こいさん❤うぽつです✊(^o^)ちゃんと…総合計!なりましたね!便利だわ(*´∀`*)
worksheetfunctionがあるVBAでは連想配列を使う意味は無いって聞いたばかりだったので
メリットを聞いてもあまり良さを感じれませんでした
こっちのほうが早かったりするのでしょうか
恐怖w さすが配列。難しいなぁ☺
恐怖です(笑)配列がオンパレードなので、難易度は高いですね(^^;
@@koikoi_zinkoutinou あ
私は連想配列も構造体も知ってますが、ちょっと説明するスピードが早い気がしました。
たぶん私の頭の回転が遅いだけかもしれませんが。
内容としてはとても有意義でした。
すみません
値のことだと思うのですが、「ち」が気になってしまいます
「あたい」って読んで欲しいです
すみません。。
classモジュールを使えば、ユーザー定義型で急な変更が必要になった時に柔軟に対応できます。僕はユーザー定義型の上位互換だと思っています笑
また、独自に処理(メソッド)を追加できるので、かなり便利だと思います。